The present invention is related to the field of microprocessor design and, more particularly, to the design of microprocessor CPUs and computational units which cooperatively operate with the CPUs.
In many microprocessors a computational unit is often added to perform some specialized function or functions in hardware. The alternative is to program the CPU to perform the function. However, the programmed CPU invariably takes more time to perform these tasks than the computational unit which is specifically designed to perform the function. In the meantime the programmed CPU is prevented from performing other functions. A typical example of a computational unit in current microprocessors is the floating point unit.
As a matter of principle, it is better to design the units of a system in a modular fashion so that each unit of the system can be changed or replaced without requiring drastic changes to other units of the system. For microprocessors, modularity in design has been difficult because, of necessity, the computational unit is tightly coupled to the CPU.
The present invention solves this problem so that a computational unit may be designed in a modular fashion, yet remain tightly coupled to the CPU so that performance of the computational unit is not degraded. This is especially useful in ASICs (Application Specific Integrated Circuits). A computational unit may be designed for a first application and another computational unit designed for second application without requiring a change in the CPU. Computational units may be "bolted on" the interface to the CPU as needed by the user of the integrated circuit.